import java.util.ArrayList;
import java.util.List;

public class FindDuplicates {

    public List<Integer> findDuplicates(int[] nums) {
        List<Integer> ans = new ArrayList<>();
        for (int i = 0; i < nums.length; i++) {
            int temp = Math.abs(nums[i]) - 1;
            int n = nums[temp];
            if (n < 0) {
                ans.add(temp + 1);
            } else {
                nums[temp] = -n;
            }
        }
        return ans;
    }
}
